AWS IoT TwinMaker Samples のクッキー工場バージョン3(CookieFactoryV3)を試してみた 〜その1ダッシュボード構築編〜
(2024/11/04 一部追記)
こんにちは、CX 事業本部製造ビジネステクノロジー部の若槻です。
AWS IoT TwinMaker Samples は、OSS で提供されている AWS IoT TwinMaker でクッキー工場のデジタルツインを作成できるサンプルです。以前に下記のブログでやってみた内容を紹介しました。
上記ブログで試したのは CookieFactory の「V1」ですが、現在の最新バージョンとして下記の「V3」が提供されています。機能としてデジタルツインを利用したモニタリングアシスタントの実装が可能となっているようです。
今回は、この AWS IoT TwinMaker Samples のクッキー工場バージョン 3(CookieFactoryV3)を試してみたので、本ブログでは「ダッシュボード構築」部分を中心に紹介します。
構築用スクリプト
構築手順では以下の 2 つのスクリプトを実行します。
cdk/install.sh
dashboard/install.sh
cdk/install.sh
スクリプト src/workspaces/cookiefactoryv3/cdk/install.sh
を実行すると、以下のリソース作成処理が行われます。
- IoT TwinMaker ワークスペースの実行ロール作成
- IoT TwinMaker ワークスペースのリソース保管バケット作成
- IoT TwinMaker ワークスペース作成
- CDK デプロイ
- リソース保管バケットへの 3D モデルおよびメタデータのアップロード
CDK デプロイ
スクリプト cdk/install.sh
での CDK デプロイにより、以下の CloudFormation スタックが作成されます。
作成される主なリソースは以下の通りです。
- AWS::Cognito::UserPool
- AWS::Cognito::UserPoolUser
- AWS::Cognito::UserPoolClient
- AWS::Cognito::IdentityPool
- AWS::Cognito::IdentityPoolRoleAttachment
- AWS::Lambda::LayerVersion
- AWS::Timestream::Database
- AWS::Timestream::Table
- AWS::IAM::Role
- AWS::Lambda::Function
- AWS::Lambda::Function
- AWS::Lambda::Function
- TmdtApp
Cognito User Pool ではダッシュボードアクセス用のユーザーの認証、Cognito Identity Pool ではユーザーが AWS リソースにアクセスするための認証情報を提供します。Timestream のデータベースおよびテーブルでは IoT TwinMaker のコンポーネントタイプで取得する時系列データを格納します。Lambda 関数は TwinMaker から Timestream にコンポーネントタイプがデータをクエリするための UDQ(User Defined Query)となります。
そして TmdtApp は「TwinMaker Development Tools(TMDT)」により作成された Construct です。TMDT を使用すると TwinMaker の各種リソースの管理を容易に行うことができます。
TMDT により下記のように TwinMaker ワークスペースにコンポーネントタイプやエンティティが作成されます。
dashboard/install.sh
スクリプトsrc/workspaces/cookiefactoryv3/dashboard/install.sh
の実行により、以下の設定が行われます。ダッシュボードログイン用のユーザーのパスワード設定を行います
- Cognito ユーザーのパスワードリセット
また app.config.template.tsx がコピーされた app.config.tsx
に Cognito user pool およびそこに登録されているユーザーの情報が設定されます。
作成されたリソースを確認してみる
IoT TwinMaker ワークスペース
シーン
TwinMaker におけるシーンはデジタルツインを表示する領域のことで、TMDT により 3 つ作成されます。
CookieFactory
はクッキー工場全体です。
Mixer
は個別のミキサーを表すシーンです。
CookieFactoryTiles
は工場の床面を表すシーンです。
エンティティ
TwinMaker におけるエンティティはシーン内で表したい物理的な機器や概念などのデジタル表現に、挙動や状態などのコンテキストを提供するリソースです。TMDT により 132 個作成されます。
コンポーネントタイプ
TwinMaker におけるコンポーネントタイプは先程作成したエンティティのコンテキストに使用するデータを AWS の内外のサービスから取得可能とするリソースです。
TMDT により以下の 15 個の User-defined のコンポーネントタイプが作成されます。
- com.example.cookiefactory.alarm
- com.example.cookiefactory.cookie-former
- com.example.cookiefactory.cookieline
- com.example.cookiefactory.equipment
- com.example.cookiefactory.mixer
- com.example.cookiefactory.processstep
- com.example.cookiefactory.space
- com.example.cookiefactory.watertank
- com.example.synthetic-telemetry
- com.example.synthetic.bufferequipment
- com.example.synthetic.cookieformerrateequipment
- com.example.synthetic.freezertunnelrateequipment
- com.example.synthetic.rateequipment
- com.example.timestream-telemetry
- com.example.workspace.synthetics
リソースライブラリ
リソースライブラリにはシーンで 3D モデルとして使用されるファイルが格納されます。
格納されるのは以下の 4 つの GLB 形式のファイルです。
- CF_SITE.glb(工場の外郭)
- CookieFactoryWaterTank.glb(ウォータータンク)
- CookieFactoryLine.glb(工場ライン)
- CookieFactoryMixer.glb(ミキサー)
GLB 形式なのでこれらのファイルは以下のように Blender で開いたり編集したりすることができます。
ダッシュボードへのアクセス
ダッシュボードとなるフロントエンドアプリケーションをローカルで起動します。フレームワークは Vite を使用します。
はじめにユーザーロールと工場のロケーションを選ぶ UI が表示されますが、デフォルトで 1 つのみなのでそれぞれクリックして進みます。
すると TwinMaker の 3D コンポーザーが表示されました。
トラブルシュート
ユーザーロール選択時に Cognito へのアクセスがエラーとなる
ダッシュボードへのアクセス時のユーザーロール選択時に Cognito へのアクセスがエラーとなる場合があります。
app.config.tsx
の内容と、実際に作成された Cognito リソースの設定やユーザー情報が異なっていないか確認します。もし異なっている場合は手動で修正するか、cdk/uninstall.sh
を実行してリソースを削除し、再度 cdk/install.sh
を実行してリソースを作成し直します。
ネクストアクション
今回はここまでです。次回はダッシュボードの機能を実際に試してみたいと思います。
またこの V3 のサンプルに Amazon Bedrock を組み合わせたデモも提供されているので、こちらも次回以降に紹介したいと思います。
(追記)実際に試してみた内容は以下のブログで紹介しています。
以上